/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package lego;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Robot</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link lego.Robot#getActionerPorts <em>Actioner Ports</em>}</li>
 *   <li>{@link lego.Robot#getSensorPorts <em>Sensor Ports</em>}</li>
 *   <li>{@link lego.Robot#getName <em>Name</em>}</li>
 *   <li>{@link lego.Robot#isBluetoothVisible <em>Bluetooth Visible</em>}</li>
 *   <li>{@link lego.Robot#isBluetoothOn <em>Bluetooth On</em>}</li>
 *   <li>{@link lego.Robot#getConnectionStatus <em>Connection Status</em>}</li>
 *   <li>{@link lego.Robot#getID <em>ID</em>}</li>
 * </ul>
 * </p>
 *
 * @see lego.LegoPackage#getRobot()
 * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='bluetoothVisibility connectionStatus connectionStatusInterval'"
 *        annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot bluetoothVisibility='self.bluetoothOn = false implies self.bluetoothVisible = false' connectionStatus='self.bluetoothOn = false implies self.connectionStatus = - 1' connectionStatusInterval='self.connectionStatus >= - 1 and self.connectionStatus <= 3'"
 * @generated
 */
public interface Robot extends EObject {
	/**
	 * Returns the value of the '<em><b>Actioner Ports</b></em>' containment reference list.
	 * The list contents are of type {@link lego.ActionerPort}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Actioner Ports</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Actioner Ports</em>' containment reference list.
	 * @see lego.LegoPackage#getRobot_ActionerPorts()
	 * @model containment="true" lower="3" upper="3" changeable="false"
	 * @generated
	 */
	EList<ActionerPort> getActionerPorts();

	/**
	 * Returns the value of the '<em><b>Sensor Ports</b></em>' containment reference list.
	 * The list contents are of type {@link lego.SensorPort}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Sensor Ports</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Sensor Ports</em>' containment reference list.
	 * @see lego.LegoPackage#getRobot_SensorPorts()
	 * @model containment="true" lower="4" upper="4" changeable="false"
	 * @generated
	 */
	EList<SensorPort> getSensorPorts();

	/**
	 * Returns the value of the '<em><b>Name</b></em>' attribute.
	 * The default value is <code>"robotName"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Name</em>' attribute.
	 * @see #setName(String)
	 * @see lego.LegoPackage#getRobot_Name()
	 * @model default="robotName" required="true"
	 * @generated
	 */
	String getName();

	/**
	 * Sets the value of the '{@link lego.Robot#getName <em>Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Name</em>' attribute.
	 * @see #getName()
	 * @generated
	 */
	void setName(String value);

	/**
	 * Returns the value of the '<em><b>Bluetooth Visible</b></em>' attribute.
	 * The default value is <code>"false"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Bluetooth Visible</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Bluetooth Visible</em>' attribute.
	 * @see #setBluetoothVisible(boolean)
	 * @see lego.LegoPackage#getRobot_BluetoothVisible()
	 * @model default="false"
	 * @generated
	 */
	boolean isBluetoothVisible();

	/**
	 * Sets the value of the '{@link lego.Robot#isBluetoothVisible <em>Bluetooth Visible</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Bluetooth Visible</em>' attribute.
	 * @see #isBluetoothVisible()
	 * @generated
	 */
	void setBluetoothVisible(boolean value);

	/**
	 * Returns the value of the '<em><b>Bluetooth On</b></em>' attribute.
	 * The default value is <code>"false"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Bluetooth On</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Bluetooth On</em>' attribute.
	 * @see #setBluetoothOn(boolean)
	 * @see lego.LegoPackage#getRobot_BluetoothOn()
	 * @model default="false"
	 * @generated
	 */
	boolean isBluetoothOn();

	/**
	 * Sets the value of the '{@link lego.Robot#isBluetoothOn <em>Bluetooth On</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Bluetooth On</em>' attribute.
	 * @see #isBluetoothOn()
	 * @generated
	 */
	void setBluetoothOn(boolean value);

	/**
	 * Returns the value of the '<em><b>Connection Status</b></em>' attribute.
	 * The default value is <code>"-1"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Connection Status</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Connection Status</em>' attribute.
	 * @see #setConnectionStatus(int)
	 * @see lego.LegoPackage#getRobot_ConnectionStatus()
	 * @model default="-1"
	 * @generated
	 */
	int getConnectionStatus();

	/**
	 * Sets the value of the '{@link lego.Robot#getConnectionStatus <em>Connection Status</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Connection Status</em>' attribute.
	 * @see #getConnectionStatus()
	 * @generated
	 */
	void setConnectionStatus(int value);

	/**
	 * Returns the value of the '<em><b>ID</b></em>' attribute.
	 * The default value is <code>"0"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>ID</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>ID</em>' attribute.
	 * @see #setID(int)
	 * @see lego.LegoPackage#getRobot_ID()
	 * @model default="0" required="true"
	 * @generated
	 */
	int getID();

	/**
	 * Sets the value of the '{@link lego.Robot#getID <em>ID</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>ID</em>' attribute.
	 * @see #getID()
	 * @generated
	 */
	void setID(int value);

} // Robot
